package demo03;

import java.io.File;

/*
 *  File类的获取功能相关方法：
 *      public String getAbsolutePath()：返回此File的绝对路径名字符串
 *      public String getPath()：将此File转换为路径名字符串
 *      public String getName()：返回由此File表示的文件名或目录名
 *      public long length()：返回由此File表示的文件的大小（字节为单位）
 */
public class Demo03File {
    public static void main(String[] args) {
        // 绝对路径存在的文件file1
        File file1 = new File("D:\\code\\ameri_-java\\Java_code\\day01\\HelloWorld.java");
        // 相对路径不存在的文件file2
        File file2 = new File("a.txt");
        // 相对路径存在的文件夹file3
        File file3 = new File("src\\demo03");

        /*
         *  public String getAbsolutePath()：返回此File的绝对路径名字符串
         *      获取构造方法中传递的路径名字符串
         *      无论构造方法中传递的是绝对路径还是相对路径，该方法返回的都是绝对路径
         */
        System.out.println(file1.getAbsolutePath()); // D:\code\ameri_-java\Java_code\day01\HelloWorld.java
        System.out.println(file2.getAbsolutePath()); // D:\code\ameri_-java\Java_code\day18\a.txt
        System.out.println(file3.getAbsolutePath()); // D:\code\ameri_-java\Java_code\day18\src\demo03

        /*
         *  public String getPath()：将此File转换为路径名字符串
         *      获取构造方法中传递的路径名字符串
         *      File类重写的toString方法就是调用getPath方法实现的
         *      toString方法源码：
         *          public String toString() {
         *              return getPath();
         *          }
         */
        System.out.println(file1.toPath()); // D:\code\ameri_-java\Java_code\day01\HelloWorld.java
        System.out.println(file1.toString()); // D:\code\ameri_-java\Java_code\day01\HelloWorld.java
        System.out.println(file1); // D:\code\ameri_-java\Java_code\day01\HelloWorld.java，打印时默认调用toString方法

        /*
         *  public String getName()：返回由此File表示的文件或目录的名称
         *      获取构造方法中传递的路径名字符串的结尾部分（一个文件名或文件夹名）
         */
        System.out.println(file1.getName()); // HelloWorld.java，文件名
        System.out.println(file2.getName()); // a.txt，文件名
        System.out.println(file3.getName()); // demo03，文件夹名

        /*
         *  public long length()：返回由此File表示的文件的大小
         *      获取的是构造方法中指定路径结尾的文件的大小，以字节为单位
         *      注意：
         *          1. 如果路径结尾的文件不存在，length方法返回0
         *          2. 如果路径结尾不是文件而是文件夹，length方法返回0，文件夹没有大小的概念
         */
        System.out.println(file1.length()); // 442，真实存在的文件，字节数为0
        System.out.println(file2.length()); // 0，不存在的文件
        System.out.println(file3.length()); // 0，真实存在的文件夹，不能判断大小
    }
}
